//系统中的加载器
//系统模块的根目录
let moduleRoot = "assembly";
let modules = [
    {name: "route",path: "route",description: "",single:true},
    {name:"nav",path:"nav",description:""}
];

//当前被加载的模块
let exeModule = new Map();
//全部的模块
let allModule = new Map();

initModule();

let luban = {
    load(root,module,params){
        let path = getJs(module);
        if(path == null){
            create(root,params)
        }else {
            $.getScript(path).done(function () {
                exeModule.set(module,1)
                create(root,params);
            });
        }

    }
};

//预加载模块
function initModule() {
    for (let i = 0;i<modules.length;i++){
        allModule.set(modules[i].name,modules[i]);
    }
    console.log("模块初始化完毕")
}

//获取js
function getJs(module) {
    //先查看元素是不是单例，如果是单例，则使用单例子的处理方式，如果不是，则加载
    let data = allModule.get(module);
    let exe = exeModule.get(module);
    if(data.single && exe != null){
        return null;
    }else {
        let path = data.path;
        if(path != ""){
            path = moduleRoot + "/" + path + ".js";
        }
        return path;
    }
}

